package map;

import java.util.*;

/**
 * Map的遍历
 * Map支持三种遍历方式:
 * 1:单独遍历Key
 * 2:遍历每一组键值对
 * 3:单独遍历value(这个操作不常用)
 *
 */
public class MapDemo2 {
    public static void main(String[] args) {
        Map<String,Integer> map =new HashMap<>();
        map.put("语文",1000);
        map.put("数学",1000);
        map.put("英语",1000);
        map.put("化学",1000);
        map.put("物理",1000);
        System.out.println(map);
        Set<String> keySet =map.keySet();
        for (String key :keySet){
            System.out.println("key"+key);
        }

        /*
            遍历每一组键值对
            Set entrySet()
            将当前Map中每一组键值对一Entry实例形式表示并存入集合后将其返回.
            entry:条目
         */
        Set<Map.Entry<String,Integer>> entrySet =map.entrySet();
        for (Map.Entry<String,Integer> e: entrySet){
            String key =e.getKey();
            Integer value =e.getValue();
            System.out.println(key+":"+value);
        }

        Collection <Integer>values = map.values();
        for (Integer value :values){
            System.out.println("value:"+value);
        }

        /*
            JDK8之后集合和Map都支持了基于lambda表达式形式遍历.
         */
        //Map会将每一组键值对作为参数传给lambda表达式
        map.forEach(
                (k,v)-> System.out.println(k+":"+v)
        );

        Collection<String> c =new ArrayList<>();
        c.add("one");
        c.add("two");
        c.add("three");
        c.add("four");
        c.add("five");
//        c.forEach(
//                e-> System.out.println(e)
//        );
        c.forEach(
                System.out::println
        );
    }

}
